package com.turing.post.capitalaccounts.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 销售机构缴款入帐单数据访问接口
 * 
 * @author 李治
 * 
 */
@Remote
@Local
public interface SaleCreditDepositBillDao {

	/**
	 * 根据主键获取SaleCreditDepositBill实例
	 * 
	 * @param id
	 *            主键ID
	 * @return 销售机构缴款入帐单
	 */
	public SaleCreditDepositBill getSaleCreditDepositBillById(BigInteger id);

	/**
	 * 根据主键获取SaleCreditDepositBill实例,准备更新
	 * 
	 * @param id
	 *            主键ID
	 * @return 销售机构缴款入帐单
	 */
	public SaleCreditDepositBill getSaleCreditDepositBillByIdForUpdate(
			BigInteger id);

	/**
	 * 根据cancelId 获取实例
	 * 
	 * @param cancelId
	 *            取消入帐单ID
	 * @return 销售机构缴款入帐单
	 */
	public SaleCreditDepositBill getSaleCreditDepositBillByCancelId(
			BigInteger cancelId);

	/**
	 * 更新缴款入账单
	 * 
	 * @param obj
	 *            销售机构缴款入帐单
	 * @throws PCPSApplicationException
	 */
	public void updateSaleCreditDepositBill(SaleCreditDepositBill obj)
			throws PCPSApplicationException;

	/**
	 * 插入缴款入帐单
	 * 
	 * @param obj
	 *            销售机构缴款入帐单
	 */
	public void insertSaleCreditDepositBill(SaleCreditDepositBill obj)
			throws PCPSApplicationException;

	/**
	 *条件分页检索 销售机构缴款入帐单
	 * 
	 * @param startTranDate
	 *            起始日期
	 * @param endTranDate
	 *            终止日期
	 * @param saleBranchNo
	 *            机构字符串
	 * @param startAmount
	 *            起始金额
	 * @param endAmount
	 *            终止金额
	 * @param depositType
	 *            缴款类型
	 * @param page
	 *            页数
	 * @return 符合条件的入账单列表
	 * @throws PCPSApplicationException
	 */
	public List<SaleCreditDepositBill> getSaleCreditDepositBill(
			PCPSWebInput webInput, Date startTranDate, Date endTranDate,
			String saleBranchNo, BigInteger startAmount, BigInteger endAmount,
			String depositType, String voucherNo, String isSingle, Integer page);

	/**
	 *条件检索 销售机构缴款入帐单总数
	 * 
	 * @param startTranDate
	 *            起始日期
	 * @param endTranDate
	 *            终止日期
	 * @param saleBranchNo
	 *            机构字符串，例:'机构号1','机构号2','机构号3'
	 * @param startAmount
	 *            起始金额
	 * @param endAmount
	 *            终止金额
	 * @param depositType
	 *            缴款类型
	 * @return 符合条件的入账单总数
	 * @throws PCPSApplicationException
	 */
	BigInteger getSaleCreditDepositBillCount(PCPSWebInput webInput,
			Date startTranDate, Date endTranDate, String saleBranchNo,
			BigInteger startAmount, BigInteger endAmount, String depositType,
			String voucherNo, String isSingle);
}
